#include <stdio.h>


typedef struct Information/*创建成员信息结构体*/
{
	char name[20];
	char post[10];
	char title[10];
	char email[15];
	int tele;
	
}Information;


typedef struct Contact/*创建通讯录结构体*/
{
	Information data[100];
	int size;
}Contact;


void InitContact(Contact*pc)//初始化通讯录
{
	assert(pc);
	pc->size = 0;
	memset(pc->data,0,sizeof(pc->data));
	
}

void Add(Contact*pc)//增加联系人
{
	assert(pc);
	if(pc->size = 100)
	{
		printf("通讯录已满，无法增加\n");
		
		return;
	}
	
	else
	{
		printf("请输入姓名");
		scanf("%s",pc->data[pc->size].name);
		printf("请输入职位");
		scanf("%s",pc->data[pc->size].post);
		printf("请输入职称");
		scanf("%s",pc->data[pc->size].title);
		printf("请输入电话");
		scanf("%d",pc->data[pc->size].tele);
		printf("请输入电子邮箱");
		scanf("%s",pc->data[pc->size].email);
		
		pc->size++;
		printf("添加成功\n");
		
	}
}


static int Find_Name(Contact*pc,char rename[])
{
	assert(pc);
	int i = 0;
	for(i = 0;i < pc->size;i++)
	{
		if(strcmp(pc->data[i].name,rename) == 0)
		{
			return i;
			
		}
	}
	return -1;
}


void Del(Contact*pc)//删除联系人
{
	char rename[20];
	assert(pc);
	if(pc->size == 0)
	{
		printf("通讯录为空，无法删除\n");
		
	}
	
	printf("请输入要删除人的姓名：");
	scanf("%s",&rename);
	
	int ret = Find_Name(pc,rename);
	if(ret == 0)
	{
		   printf("要删除的人不存在\n");
		   return 0;
	}
	else if(ret != -1)
	{      int i = 0;
	       for(i = ret;i < pc->size - 1; i++ )
	{
		   pc->data[i] = pc->data[i + 1];
	}
	pc->size--;
	printf("删除成功\n");
	
}


void Modify(Contact*pc)//修改联系人
{
	char rename[20];
	assert(pc);
	printf("请输入要修改人的姓名：");
	scanf("%s",&rename);
	int ret = Find_Name(pc,rename);
	if(ret == -1)
	{
		printf("要修改的人不存在\n");
		return;
		
	}
	
	    printf("请输入姓名");
		scanf("%s",pc->data[pc->size].name);
		printf("请输入职位");
		scanf("%s",pc->data[pc->size].post);
		printf("请输入职称");
		scanf("%s",pc->data[pc->size].title);
		printf("请输入电话");
		scanf("%d",pc->data[pc->size].tele);
		printf("请输入电子邮箱");
		scanf("%s",pc->data[pc->size].email);
		printf("修改成功\n");
	
}
        
		
void Search(Contact*pc)//显示联系人
{
	char rename[20];
	assert(pc);
	printf("请输入要查找人的姓名：");
	scanf("%s",&rename);
	int ret = Find_Name(pc,rename);
	if(ret == -1)
	{
		printf("要查找的人不存在\n");
		return;
	
    }
    printf("%-20s%-5s%-5s%-12s%-30s%\n","姓名","职位","职称","电话","电子邮箱");
    printf("%-20s%-5s%-5s%-12s%-30s%\n",
		pc->data[ret].name,
		pc->data[ret].post,
		pc->data[ret].title,
		pc->data[ret].tele,
		pc->data[ret].email);
}
    
    
void Sort(Contact*pc)//排序联系人
{
}

void Show(Contact*pc)//查找联系人
{
	assert(pc);
	int i = 0;
	if(pc->size == 0)
	{
		printf("通讯录为空，无需打印\n");
		return;
	}
	
	printf("%-20s%-5s%-5s%-12s%-30s%\n","姓名","职位","职称","电话","电子邮箱");
	for(i = 0;i < pc->size; i++)
	{
		printf("%-20s%-5s%-5s%-12s%-30s%\n",
		pc->data[i].name,
		pc->data[i].post,
		pc->data[i].title,
		pc->data[i].tele,
		pc->data[i].email);
	}
	
	
}

void menu()/*创建菜单*/
{
	printf("************************\n");
	printf("*****通讯录管理系统*****\n");
	printf("******1.添加联系人******\n");
	printf("******2.删除联系人******\n");
	printf("******3.修改联系人******\n");
	printf("******4.查找联系人******\n");
	printf("******5.排序联系人******\n");
	printf("******6.显示联系人******\n");
	printf("************************\n");
}

int main()
{
	int input = 0;
	Contact con;
	InitContact(&con);
	do
	{
		menu();
		printf("请输入要执行的功能：");
		scanf("%d",&input);
		     switch(input)
			 {
			 	case 1:Add(&con);
			 	                 break;
			 	case 2:Del(&con);
				                 break;
				case 3:Modify(&con);
				                 break;
				case 4:Search(&con);
				                 break;
				case 5:Sort(&con);
				                 break;
				case 6:Show(&con);
				                 break;
			    default:
			    	             break;
				                 
				
				               
							 			                  
								                  
			 }       
	}while(input)
}
















